package com.fy.fyspace.service;

import com.fy.fyspace.model.entity.ConcurrentTask;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 并发任务服务接口
 *
 * @author fwq
 * @since 2025-06-14
 */
public interface ConcurrentTaskService {

    @Transactional(rollbackFor = Exception.class)
    List<ConcurrentTask> batchCreateTasks(List<String> taskNames);

    /**
     * 执行单个任务
     * 用于JMeter并发测试
     *
     * @param taskId 任务ID
     * @return 执行结果
     */
    String executeTask(Long taskId);
    
    /**
     * 并发执行所有待处理任务
     * 使用线程池并发执行任务，每个任务模拟2秒处理时间
     * 任务状态变化：待处理(0) -> 处理中(1) -> 完成(2)或失败(3)
     *
     * @return 执行结果，包含执行的任务数量
     */
    String executeTasks();
    
    /**
     * 串行执行所有待处理任务
     *
     * @return 执行结果
     */
    String executeTasksSequentially();
    
    /**
     * 获取所有任务列表
     *
     * @return 任务列表
     */
    List<ConcurrentTask> listAllTasks();
} 